﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.Web.Security;
using Intelsi.Entity;
using Intelsi.BusinessLogic;
using Microsoft.Practices.Unity;

namespace Intelsi.WB
{
    public partial class EditarPedido : System.Web.UI.Page
    {
       
        [Dependency]
        public IProyectoBL proyectoBL { get; set; }


        [Dependency]
        public IProductoBL productoBL { get; set; }

        [Dependency]
        public ITrabajadorBL trabajadorBL { get; set; }

        [Dependency]
        public IPedidoBL pedidoBL { get; set; }


        private const string VARPRODUCTO = "producto";
        private const string VARPEDIDO = "pedido";

        protected void Page_Load(object sender, EventArgs e)
        {

            var acc = Request.QueryString["acc"];

            if (!Page.IsPostBack)
            {
                if (acc != string.Empty)
                {
                    if (acc == "editar")
                    {
                        var IdPedido = Int32.Parse(Request.QueryString["IdPedido"]);
                        var pedido = pedidoBL.GetfromPedidoByIdPedido(IdPedido);
                        BindPedido(pedido);
                    }

                    if (acc == "nuevo")
                    {
                        var pednuevo = new PedidoDTO();

                        PedidoDataBindNUevo(pednuevo);


                    }
                }
            }





        }

        private void PedidoDataBindNUevo(PedidoDTO pedidonuevo)
        {
            string userName = HttpContext.Current.User.Identity.Name;

            pedidonuevo = trabajadorBL.GetFromTrabajadorByCorreoCorporativo(userName);

            TxtNumPedi.Text = "0";
            TxtFechaPedido.Text = DateTime.Now.ToString();

            hfIdTrabajador.Value = pedidonuevo.IdSupervisor.ToString();
            TxtNombSup.Text = pedidonuevo.NombreSuper;
            TxtDniSup.Text = pedidonuevo.dniSuper;
            TxtCeluEmpre.Text = pedidonuevo.celularSuper;
            TxtNumeFotoEmpl.Text = pedidonuevo.numFotochSuper;

            //pedidonuevo.IdPedido.ToStrin = hfIdProyecto.Value.ToString();

            hfIdProyecto.Value = pedidonuevo.IdSupervisor.ToString();
            TxtDesPro.Text = pedidonuevo.Descripcion;
            TxtOrdeser.Text = pedidonuevo.ordenServicio;
            TxtEmpresa.Text = pedidonuevo.empresa;

            GrillaPedido.DataSource = pedidonuevo.DetallePedido;
            GrillaPedido.DataBind();


        }



        private void CargaMemoryProducto()
        {
            var producto = new DetallePedidoDTO();

            hfIdProducto.Value = producto.IdProducto.ToString();
            TxtDescProdu.Text = producto.Descripcion;
            TxtCodProd.Text = producto.Codigo;
            TxtMarca.Text = producto.NombreMarca;


            Cache.Insert(VARPRODUCTO, producto);

        }


        protected void BtnAgregar_Click(object sender, EventArgs e)
        {
            var producto = new DetallePedidoDTO();

            //Revisa la version anterior esto las puesto al revez...
            producto.IdProducto = Int32.Parse(hfIdProducto.Value);
            producto.Descripcion = TxtDescProdu.Text;
            producto.Codigo = TxtCodProd.Text;
            producto.NombreMarca = TxtMarca.Text;


            Cache.Insert(VARPRODUCTO, producto);

            // var producto = Cache.Get(VARPRODUCTO) as DetallePedidoDTO;
            var cantidad = decimal.Parse(TxtCantidad.Text);
            bool exist;

            if (TxtCodProd.Text == null)
            {
                exist = false;
            }
            else
            {
                exist = true;
            }

            var existencia = exist;

            DetallePedidoDTO newdetalle = new DetallePedidoDTO()
            {
                IdProducto = producto.IdProducto,
                Codigo = producto.Codigo,
                Descripcion = producto.Descripcion,
                NombreMarca = producto.NombreMarca,
                Cantidad = cantidad,
                Existencia = existencia

            };

            var pedido = Cache.Get(VARPEDIDO) as PedidoDTO;
            pedido.DetallePedido.Add(newdetalle);
            BindPedido(pedido);
        }


        private void BindPedido(PedidoDTO pedido2)
        {


            TxtNumPedi.Text = pedido2.IdPedido.ToString();
            TxtFechaPedido.Text = pedido2.FechaPedio.ToShortDateString();

            hfIdTrabajador.Value = pedido2.IdSupervisor.ToString();
            TxtDniSup.Text = pedido2.dniSuper;
            TxtNombSup.Text = pedido2.NombreSuper;
            TxtNumeFotoEmpl.Text = pedido2.numFotochSuper;
            TxtCeluEmpre.Text = pedido2.celularSuper;

            hfIdProyecto.Value = pedido2.IdProyecto.ToString();
            TxtDesPro.Text = pedido2.Descripcion;
            TxtOrdeser.Text = pedido2.ordenServicio;
            TxtEmpresa.Text = pedido2.empresa;

            CargaMemoryProducto();

            GrillaPedido.DataSource = pedido2.DetallePedido;
            GrillaPedido.DataBind();

            Cache.Insert(VARPEDIDO, pedido2);


        }

        private void UpdateCache(PedidoDTO pedido)
        {
            pedido.FechaPedio = DateTime.Parse(TxtFechaPedido.Text);


            pedido.IdSupervisor = Int32.Parse(hfIdTrabajador.Value.ToString());


            pedido.IdProyecto = Int32.Parse(hfIdProyecto.Value.ToString());
            pedido.Descripcion = TxtDesPro.Text;
            pedido.ordenServicio = TxtOrdeser.Text;
            pedido.empresa = TxtEmpresa.Text;

            pedido.IdSupervisor = Int32.Parse(hfIdTrabajador.Value.ToString());
            pedido.NombreSuper = TxtNombSup.Text;
            pedido.dniSuper = TxtDniSup.Text;
            pedido.celularSuper = TxtCeluEmpre.Text;
            pedido.numFotochSuper = TxtNumeFotoEmpl.Text;


            //foreach (var row in lvDetalle.Items)
            //{
            //    var txtCantidad = row.FindControl("txtDetalleCantidad") as TextBox;

            //    pedido.DetallePedido[row.DataItemIndex].Cantidad = decimal.Parse(txtCantidad.Text);
            //}

            //pedido.Total = pedido.DetallePedido.Sum(p => p.Monto);

            BindPedido(pedido);
        }

        protected void Button1_Click(object sender, EventArgs e)
        {

        }
    }
}